//
//  def.h
//  phi_four
//
//  Created by Snir Gazit on 3/8/12.
//  Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#ifndef def_h
#define def_h

// Definitions

#define DIM 3
#define MAX_BOND 100
// 0 - WORM
// 1 - WORMLOOP
//#define SIM_ALG 1
//#define MULTILOOP

// Includes
//#include <mathimf.h>
#include "boost/array.hpp"
#include <boost/ptr_container/ptr_vector.hpp>	
#include <vector>
#include <numeric>
#include <algorithm>
#include <boost/scoped_ptr.hpp>
#include <boost/progress.hpp>
#include <fstream>
#include <iostream>
#include <sstream>
#include <complex>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/iostreams/filter/gzip.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/split_member.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/zlib.hpp>
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/mean.hpp>
#include <boost/accumulators/statistics/moment.hpp>
#include <boost/accumulators/statistics/count.hpp>
// Types

typedef boost::array<int, DIM> IndexType;
typedef boost::array<double, MAX_BOND> BoltzWeightType;

namespace ba = boost::accumulators;
typedef ba::accumulator_set<double, ba::features<ba::tag::mean,ba::tag::count> > acc;
typedef ba::accumulator_set<double, ba::stats<ba::tag::variance> > accVar;

#endif
